..\..\My Documents\N64 Roms - Super Mario 64\Super Mario 64 (English).swab.v64
80380300: 3c 0e 80 39  LUI t6, 0x8039 (32825)
80380304: 85 ce b8 ac  LH t6, t6, 0xffffb8ac (-18260)
80380308: 24 01 ff ff  ADDIU at, r0, 0xffffffff (-1)
8038030c: 11 c1 00 19  BEQ at, t6, 0x80380374 (pc + 0x64)
80380310: 00 00 00 00  NOP

80380314: 3c 08 80 39  LUI t0, 0x8039 (32825)
80380318: 85 08 b8 ac  LH t0, t0, 0xffffb8ac (-18260)      t0 = *(0x8038b8ac)
8038031c: 3c 0f 80 39  LUI t7, 0x8039 (32825)
80380320: 8d ef be 28  LW t7, t7, 0xffffbe28 (-16856)      t7 = *(0x8038be28)
80380324: 3c 19 80 33  LUI t9, 0x8033 (32819)
80380328: 8f 39 dd c8  LW t9, t9, 0xffffddc8 (-8760)       t9 = *(0x8032ddc8)       
8038032c: 00 08 49 00  SLL t1, t0, 0x4 (4)                 t1 = t0 * 16         t1 = *(0x8038b8ac) * 16
80380330: 85 f8 00 02  LH t8, t7, 0x2 (2)                  t8 = *(t7 + 2)       t8 = *(*(0x8038be28) + 2)
80380334: 01 28 48 23  SUBU t1, t1, t0                     t1 -= t0;            t1 = *(0x8038b8ac) * 16 - *(0x8038b8ac)
80380338: 00 09 48 80  SLL t1, t1, 0x2 (2)                 t1 *= 4              t1 = (*(0x8038b8ac) * 16 - *(0x8038b8ac)) * 4
8038033c: 03 29 50 21  ADDU t2, t9, t1                     t2 = t9 + t1         t2 = *(0x8032ddc8) + (*(0x8038b8ac) * 16 - *(0x8038b8ac)) * 4
80380340: a5 58 00 36  SH t8, t2, 0x36 (54)                *(t2 + 0x36) = t8    *((*(0x8032ddc8) + (*(0x8038b8ac) * 16 - *(0x8038b8ac)) * 4) + 0x36) = *(*(0x8038be28) + 2)

80380344: 3c 0e 80 39  LUI t6, 0x8039 (32825)
80380348: 85 ce b8 ac  LH t6, t6, 0xffffb8ac (-18260)      t6 = *(0x8038b8ac)
8038034c: 3c 0b 80 39  LUI t3, 0x8039 (32825)
80380350: 8d 6b be 28  LW t3, t3, 0xffffbe28 (-16856)      t3 = *(0x8038be28)
80380354: 3c 0d 80 33  LUI t5, 0x8033 (32819)
80380358: 8d ad dd c8  LW t5, t5, 0xffffddc8 (-8760)       t5 = *(0x8032ddc8)
8038035c: 00 0e 79 00  SLL t7, t6, 0x4 (4)                 t7 = t6 * 16         t7 = *(0x8038b8ac) * 16
80380360: 85 6c 00 04  LH t4, t3, 0x4 (4)                  t4 = *(t3 + 4)       t4 = *(*(0x8038be28) + 4)
80380364: 01 ee 78 23  SUBU t7, t7, t6                     t7 -= t6             t7 = *(0x8038b8ac) * 16 - *(0x8038b8ac)
80380368: 00 0f 78 80  SLL t7, t7, 0x2 (2)                 t7 *= 4              t7 = (*(0x8038b8ac) * 16 - *(0x8038b8ac)) * 4
8038036c: 01 af 40 21  ADDU t0, t5, t7                     t0 = t5 + t7         t0 = *(0x8032ddc8) + (*(0x8038b8ac) * 16 - *(0x8038b8ac)) * 4
80380370: a5 0c 00 38  SH t4, t0, 0x38 (56)                *(t0 + 0x38) = t4    *((*(0x8032ddc8) + (*(0x8038b8ac) * 16 - *(0x8038b8ac)) * 4) + 0x38) = *(*(0x8038be28) + 4)

80380374: 3c 19 80 39  LUI t9, 0x8039 (32825)
80380378: 8f 39 be 28  LW t9, t9, 0xffffbe28 (-16856)
8038037c: 3c 01 80 39  LUI at, 0x8039 (32825)
80380380: 93 29 00 01  LBU t1, t9, 0x1 (1)
80380384: 03 29 c0 21  ADDU t8, t9, t1
80380388: ac 38 be 28  SW t8, at, 0xffffbe28 (-16856)      *(0x8038be28) += *((char *)(*(0x8038be28))

8038038c: 03 e0 00 08  JR ra
80380390: 00 00 00 00  NOP


short gv8032ddc8; /* ptr to a 60 byte per ent table?  there is a short at off 0x36 */
short gv8038b8ac; /* an index into above table */

typedef struct tagLEVELCMD {
    uint8 command;
    uint8 size;
} LEVELCMD;

typedef struct tagMUSICLEVELCMD {
    tagLEVELCMD lc; /* 2 @ 0 */
    uint16 a;       /* 2 @ 2 */
    uint16 b;       /* 2 @ 4 */
} MUSICLEVELCMD;


LEVELCMD *lvlloadwp; /* 0x8038be28 */


void handle_music_command()
{
    ((*gv8032ddc8)[gv8038b8ac])->off0x36 = ((MUSICLEVELCMD *)lvlloadwp)->a;
    ((*gv8032ddc8)[gv8038b8ac])->off0x38 = ((MUSICLEVELCMD *)lvlloadwp)->b;

    /*   *((*(0x8032ddc8) + (*(0x8038b8ac) * 15) * 4) + 0x36) = ((MUSICLEVELCMD *)lvlloadwp)->a */
    /*   *((*(0x8032ddc8) + (*(0x8038b8ac) * 15) * 4) + 0x38) = ((MUSICLEVELCMD *)lvlloadwp)->b */

    lvlloadwp += lvlloadwp->size;
}